<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Organizacion_area_frm( $this );

	class Organizacion_area_frm extends Frm
	{
	function setValue ( $ncOrganizacion, $ncArea)
		{
			$cSql = "SELECT cdArea, cTelefono, cEmail, ncAreaPadre, ncResponsable
								FROM atOrganizacionArea
								WHERE ncOrganizacion = $ncOrganizacion
									AND ncArea = $ncArea";
			$aRow = $this->oDatabase->getArray($cSql);
			$this->setFieldsArray ( $aRow );
			return $aRow;
		}
	function Organizacion_area_frm( &$oModule )
		{
			$this->Frm( $oModule );
			//Crea los Objetos de los campos de edicion
			$this->aFields['ncOrganizacion'] 	= new Input( "Codigo Organizacion", "ncOrganizacion", '', false, true );
			$this->aFields['ncArea'] 				= new Input( "Codigo Area", "ncArea", '', false, true );
			$this->aFields['cdArea'] 				= new InputText ( "Nombre", "cdArea" );
			$this->aFields['cTelefono'] 			= new InputText ( "Telefono", "cTelefono" );
			$this->aFields['cEmail']				= new InputText( "Email", "cEmail" );
			$this->aFields['ncAreaPadre'] 		= new InputList( "Depende de", "ncAreaPadre" );
			$this->aFields['ncResponsable'] 	= new InputList( "Responsable", "ncResponsable" );
		}
	function initializeForm()
		{
			// Si Recibe la Pk => busca los datos
				if ( $this->isRetrievable() && $this->aFields['ncOrganizacion']->getValue() && $this->aFields['ncArea']->getValue()  )
					{
						$aRow = $this->setValue( $this->aFields['ncOrganizacion']->getValue() , $this->aFields['ncArea']->getValue() );
					}
			// Configura el Titulo
				$this->setLabel( "Organizacion - Area" );
				if ( $this->aFields['ncOrganizacion']->getValue() )
				{
					$cdOrganizacion = $this->oDatabase->getData("SELECT cdOrganizacion FROM atOrganizacion WHERE ncOrganizacion = " . $this->aFields['ncOrganizacion']->getValue());
					$this->setLabel( "Area de $cdOrganizacion" );
				}
			return true;
		}
	function initializeField( $cField , &$oField )
		{
			switch ( $cField )
			{
				case 'cdArea':
					$oField->setMandatory( $this->isMandatory() );
					$oField->setLength(140);
				break;
				case 'ncAreaPadre':
					if ( $this->aFields['ncOrganizacion']->getValue()  )
					{
						$cSql = "SELECT ncArea, cdArea FROM atOrganizacionArea WHERE ncOrganizacion = " . $this->aFields['ncOrganizacion']->getValue() ;
						$oField->setMatrix( $this->oDatabase->getMatrix($cSql) );
					} else
					{
						$oField->setHidden();
					}
				break;
				case 'ncResponsable':
					if ( $this->aFields['ncArea']->getValue()  )
					{
						$cSql = "SELECT OPe.ncPersona, cApellido FROM atOrganizacionPersona  as OPe JOIN atPersona as Per ON Per.ncPersona = OPe.ncPersona WHERE ncArea = " . $this->aFields['ncArea']->getValue() . " AND ncOrganizacion = " . $this->aFields['ncOrganizacion']->getValue() ;
						$oField->setMatrix( $this->oDatabase->getMatrix($cSql) );
					} else
					{
						$oField->setHidden();
					}
				break;
				case 'cTelefono':
					$oField->setLength(20);
				break;
				case 'cEmail':
					$oField->setLength(60);
				break;
			}
		}
	}
?>